+2007-01-14 Christian Persch <chpe@svn.gnome.org>
+
+ * gtk/gtkclipboard.c: (gtk_clipboard_set_text),
+ (gtk_clipboard_set_image): Use gtk_target_table_new_from_list and
+ gtk_target_table_free instead of duplicating the code. Bug #396493.
+
2007-01-13 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkuimanager.c: Don't crash if menu or toolbar
gint len)
{
GtkTargetList *list;
- GList *l;
GtkTargetEntry *targets;
- gint n_targets, i;
+ gint n_targets;
g_return_if_fail (clipboard != NULL);
g_return_if_fail (text != NULL);
list = gtk_target_list_new (NULL, 0);
gtk_target_list_add_text_targets (list, 0);
- n_targets = g_list_length (list->list);
- targets = g_new0 (GtkTargetEntry, n_targets);
- for (l = list->list, i = 0; l; l = l->next, i++)
- {
- GtkTargetPair *pair = (GtkTargetPair *)l->data;
- targets[i].target = gdk_atom_name (pair->target);
- }
+ targets = gtk_target_table_new_from_list (list, &n_targets);
if (len < 0)
len = strlen (text);
g_strndup (text, len));
gtk_clipboard_set_can_store (clipboard, NULL, 0);
- for (i = 0; i < n_targets; i++)
- g_free (targets[i].target);
- g_free (targets);
+ gtk_target_table_free (targets, n_targets);
gtk_target_list_unref (list);
}
GdkPixbuf *pixbuf)
{
GtkTargetList *list;
- GList *l;
GtkTargetEntry *targets;
- gint n_targets, i;
+ gint n_targets;
g_return_if_fail (clipboard != NULL);
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
list = gtk_target_list_new (NULL, 0);
gtk_target_list_add_image_targets (list, 0, TRUE);
- n_targets = g_list_length (list->list);
- targets = g_new0 (GtkTargetEntry, n_targets);
- for (l = list->list, i = 0; l; l = l->next, i++)
- {
- GtkTargetPair *pair = (GtkTargetPair *)l->data;
- targets[i].target = gdk_atom_name (pair->target);
- }
+ targets = gtk_target_table_new_from_list (list, &n_targets);
gtk_clipboard_set_with_data (clipboard,
targets, n_targets,
g_object_ref (pixbuf));
gtk_clipboard_set_can_store (clipboard, NULL, 0);
- for (i = 0; i < n_targets; i++)
- g_free (targets[i].target);
- g_free (targets);
+ gtk_target_table_free (targets, n_targets);
gtk_target_list_unref (list);
}